package com.aliyun.messagemgt.common.enums;

import com.google.common.collect.Lists;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *  * 消息源有效期枚举类 消息源有效期类型：1：不限 2：一年有效期 3：一个月 4：一周 5：当天有效 6：自定义
 *  * 代码中有用到推送渠道相关的常量。请修改并使用此类
 * @author
 * @date
 */
public enum SourceTypeEnum {
	/**
	 * 不限
	 */
	NO_LIMIT(1, "不限"),
	/**
	 * 一年有效期
	 */
	ONE_YEAR(2, "一年有效期"),
	/**
	 * 一月有效期
	 */
	ONE_MONTH(3, "一月有效期"),
	/**
	 * 一周有效期
	 */
	ONE_WEEK(4, "一周有效期"),
	/**
	 * 当天有效
	 */
	ONE_DAY(5, "当天有效"),
	/**
	 * 自定义
	 */
	CUSTOM(6, "自定义");

    private Integer type;
    private String name;


    SourceTypeEnum(Integer type, String name){
        this.type = type;
        this.name = name;
    }
	public Integer getType() {
		return type;
	}
	public String getName() {
		return name;
	}

	/**
	 * 获取状态说明
	 *
	 * @param type 键
	 * @return
	 */
	public static String getMsgName(int type) {
		SourceTypeEnum auditEnum = SourceTypeEnum.valueofType(type);
		if (auditEnum == null) {
			return null;
		}
		String msgValue = auditEnum.getName();
		return msgValue;
	}

	/**
	 * 获取状态对象实例
	 *
	 * @param type 键
	 * @return
	 */
	public static SourceTypeEnum valueofType(int type) {
		for (SourceTypeEnum auditEnum : SourceTypeEnum.values()) {
			if (auditEnum.type == (type)) {
				return auditEnum;
			}
		}
//        throw new IllegalArgumentException("未查询到匹配实例对象：" + key);
		return null;
	}
	//讲枚举转换成list格式，这样前台遍历的时候比较容易，列如 下拉框 后台调用toList方法，你就可以得到type 和name了
	public static List toList() {
		//Lists.newArrayList()其实和new ArrayList()几乎一模
		List list = Lists.newArrayList();
		for (SourceTypeEnum pushChannelEnum : SourceTypeEnum.values()) {
			//屏蔽掉暂时不开放的渠道WEIXIN_CHANMEL(1, "微信渠道"),ALIPAY_APPLET(8, "支付宝小程序"),
			//WECHAT_APPLET(9, "微信小程序"),MPAAS(20, "移动开发mPaaS");
				Map<String, Object> map = new HashMap<>();
				map.put("type", pushChannelEnum.getType());
				map.put("name", pushChannelEnum.getName());
				list.add(map);
		}
		return list;
	}
}
